from django.http import HttpResponse, JsonResponse
from django.views.generic import View
import json
from .forms import BookForm, SignUpForm

class IndexView(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse('首页')


class AddBookView(View):
    def post(self, request, *args, **kwargs):
        form = BookForm(request.POST)
        if form.is_valid():
            # title = form.cleaned_data.get('title')
            # pages = form.cleaned_data.get('pages')
            # price = form.cleaned_data.get('price')
            # print('title：', title)
            # print('pages：', pages)
            # print('price：', price)

            # TODO: save方法
            # ModelForm还有save方法，可以在验证完成后直接调用save方法，就可以将这个数据保存到数据库中了
            form.save()
            return HttpResponse('success')
        else:
            print(form.errors.get_json_data())
            return HttpResponse('fail')


class SignUpView(View):
    def post(self, request, *args, **kwargs):
        form = SignUpForm(request.POST)
        if form.is_valid():
            # 调用save方法的时候，如果传入一个commit=False，那么只会生成这个模型的对象，而不会把这个对象真正的插入到数据库中。
            # 比如表单上验证的字段没有包含模型中所有的字段，这时候就可以先创建对象，再根据填充其他字段，
            # 把所有字段的值都补充完成后，再保存到数据库中
            user = form.save(commit=False)
            psd1 = form.cleaned_data.get('psd1')
            user.password = psd1
            user.save()
            return HttpResponse('success')
        else:
            errormsg = json.dumps(form.errors.get_json_data())
            return HttpResponse(content=errormsg, content_type='application/json')